Databases are software systems that support the storage of data as collections of logical constructs called tables, each of the tables containing records with a specified structure. As the number of applications grows in a single database, the load on that database may become be too high for the database to provide reasonable response times. One approach to solving this problem is adding more storage in the database for the additional data. However, this solution may increase data delivery time, providing a less desirable end user experience. Further, in some instances, scaling out of a database may be necessary because scaling up (e.g. adding additional disk space, RAM, CPU, etc.) has practical and physical limitations (e.g. a single database server may only support a certain amount of RAM).